const puppeteer = require('puppeteer')
const url =  `https://movie.douban.com/tag/#/?sort=U&range=0,10&tags=日本`
const sleep = time => new Promise(resolve => {
    setTimeout(() => {
        resolve()
    }, time)     
})
;(async () => {
    console.log('Start visit the targer page')
    const browser = await puppeteer.launch({
        args : ['--no-sandbox'],
        dumpio: false
    })

    // 开启一个新页面
    const page = await browser.newPage()
    // 等待页面 等网络空闲的时候 说明网页已经加载完毕了
    await page.goto(url, {
        waitUntil: 'networkidle2'
    })

    // await sleep(3000)

    // 等待 一直等到页面上出现.more按钮后才继续往下进行
    // await page.waitForSelector('.more')

    // 这里写死了 只获取两页内容 点击一次 "获取更多",
    // for(let i = 0; i < 1; i++){
    //     await sleep(3000)
    //     await page.click('.more')
    // }

    // 两页页面已存在
    // 开始执行页面爬虫逻辑
    const result = await page.evaluate( () => {
        var $ = window.$
        var items = $('.list-wp a')
        var lists = []

        if(items.length >= 1){
            items.each((index, item) => {
                let it = $(item)
                let doubanId = it.find('div').data('id')
                let title = it.find('.title').text()
                let rate = Number(it.find('.rate').text())
                let poster = it.find('img').attr('src').replace('s_ratio', 'l_ratio')


                lists.push({
                    doubanId,
                    title,
                    rate,
                    poster
                })
            })
        }

        return lists
    })
    console.log(result)
    browser.close()
    
    // 将结果发送给出
    // process.send({result})
    // 进程退出
    // process.exit(0)
})()